from django.contrib import admin
from django.conf import settings
from tjango.ajax_select import *
from django.db.models import Q
from tjango.ajax_select.admin import *
from tjango.ajax_select.fields import *
from django.forms import *
from tjango.extra_admin.admin import *

from models import *

class BarrioAdmin(admin.ModelAdmin):
	list_filter = ['barrio_mas_cercano']
	list_display = ['nombre', 'barrio_mas_cercano']

class CalleAdmin(admin.ModelAdmin):
	search_fields =['nombre']


class LocalidadAdmin(admin.ModelAdmin):
	search_fields =['nombre']
	list_per_page = 200
	list_display = ['nombre', 'provincia', 'localidad_mas_cercana']
	list_filter = ['provincia', 'localidad_mas_cercana']
			

class DomicilioInline(admin.StackedInline):
	form = make_ajax_form(Domicilio,dict(localidad='localidades',calle='calles'))
	fieldsets = ( 
			(None, {'fields': (('calle','nro', 'piso','departamento'), ('codigo_postal','barrio', 'localidad', 'provincia','pais','otros_datos','horario'))}),
	)
	model = Domicilio
	min_num_in_admin=1
	extra=1



class TelefonoInline(admin.TabularInline):
	model = Telefono_de_contacto
	extra=3

class RelacionesInline(admin.TabularInline):
	model = Persona_relacionada
	extra=3

class ConexionesInline(admin.TabularInline):
	model = Conexion_remota
	extra=0



class ContactoAdminForm(ModelForm):
	grupo = AutoCompleteSelectField('contactos', required=False)	
	referencia = AutoCompleteSelectField('contactos', required=False)	
	cuit = ARCUITField(required=False)

	class Meta:
		model = Contacto
                	
class ContactoAdmin(ExtraAdmin):
	form = ContactoAdminForm
	
	search_fields = ['nombre', 'cuit', 'apellido','email', 'relaciones__email', 'relaciones__nombre', 'telefonos__nro', 'domicilios__localidad__nombre','domicilios__provincia__nombre']
	list_filter = ['actividad','modo_de_contacto'] 
	list_display = ('apellido', 'nombre', 'cuit', 'sexo', 'email')
	list_per_page = 50
	list_display_links = ('nombre', 'apellido')
	fieldsets = ( 
			(None, {'fields': (('apellido','nombre'), ('sexo','actividad','grupo'))}),
			('Otros datos', {'fields': (('email','web'), ('fecha_de_nacimiento','cuit'), )}),
			('Contacto', {'fields': (('fecha_de_contacto','modo_de_contacto', 'referencia'),
				('ultimo_reclamo','no_reclamar_nada_antes_de', 'lugar_de_entrega'),('foto',))}),
			('Observaciones', {'fields': ('observaciones',)}),
	)
	ordered_inlines = [ ('Otros datos', DomicilioInline), ('Contacto', TelefonoInline), ('Contacto', RelacionesInline),ConexionesInline]

	lookup_fields = ['observaciones']


	class Media:
		js = []
		css= {}


class ContactoLookup(object):

	def get_query(self,q,request):
		""" return a query set.  you also have access to request.user if needed """
		return Contacto.objects.filter(Q(nombre__icontains=q) | Q(apellido__icontains=q) | Q(email__icontains=q) | Q(relaciones__nombre__icontains=q)|Q(telefonos__nro__icontains=q)).distinct()
                  
	def format_result(self,contact):
		""" the search results display in the dropdown menu.  may contain html and multiple-lines. will remove any |  """
		return u"%s" % contact
                                      
	def format_item(self,contact):
		""" the display of a currently selected object in the area below the search box. html is OK """
		return unicode(contact)
                                                         
	def get_objects(self,ids):
		""" given a list of ids, return the objects ordered as you would like them on the admin page.
		this is for displaying the currently selected items (in the case of a ManyToMany field)
        """
		return Contacto.objects.filter(pk__in=ids).order_by('apellido','nombre')
                          
                          
if not Sexo in admin.site._registry:					
	admin.site.register(Sexo)
	admin.site.register(Tipo_conexion_remota)
	admin.site.register(Barrio, BarrioAdmin)
	admin.site.register(Calle, CalleAdmin)
	admin.site.register(Actividad)
	admin.site.register(Pais)
	admin.site.register(Provincia)
	admin.site.register(Localidad, LocalidadAdmin)
	admin.site.register(Contacto, ContactoAdmin)

from tjango.modules.models import *
app = system.reg_app("contactos")
app.reg_item(Sexo)
app.reg_item(Condicion_iva)
app.reg_item(Tipo_conexion_remota)
app.reg_item(Barrio, BarrioAdmin)
app.reg_item(Calle, CalleAdmin)
app.reg_item(Actividad)
app.reg_item(Pais)
app.reg_item(Provincia)
app.reg_item(Localidad, LocalidadAdmin)
app.reg_item(Contacto, ContactoAdmin)
app.reg_item(Domicilio)
app.reg_item(Telefono_de_contacto)
app.reg_item(Estado_civil)
app.reg_item(CodigoPostal)
#system.apps["caja"].reg_item(Resumen_de_gastos,"Resumen de gastos",query=True)
